/**
 * <strong>Title : RepairOrder.java<br>
 * </strong> <strong>Package : cn.b.sky.mes.em.service<br>
 * </strong> <strong>Description : </strong>@类注释说明写在此处@<br>
 * <strong>Create on : 2015年11月9日 下午4:14:27<br>
 * </strong>
 * <p>
 * @author dapeng.li<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 *          <strong>修改历史:</strong><br>
 *          修改人 | 修改日期 | 修改描述<br>
 *          -------------------------------------------<br>
 * <br>
 * <br>
 */
package cn.b.sky.mes.em.service;

import java.util.List;

import cn.b.sky.mes.em.model.RepairOrderPart;

import cn.b.sky.mes.em.model.RepairOrder;
import cn.b.sky.mes.em.model.RepairOrderCause;
import cn.b.sky.mes.em.model.condition.RepairOrderCondition;
import cn.b.sky.common.model.BatchJobReport;
import org.activiti.engine.delegate.DelegateTask;

/**
 * <strong>Title : RepairOrderService.java<br></strong>
 * <strong>Package : cn.b.sky.mes.em.service<br></strong>
 * <strong>Description : </strong>设备维修服务<br> 
 * <strong>Create on : 2015年11月9日 下午4:14:27<br></strong>
 * <p>
 * @author dapeng.li<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 * <strong>修改历史:</strong><br>
 * 修改人 | 修改日期 | 修改描述<br>
 * -------------------------------------------<br>
 * <br>
 * <br>
 */
public interface RepairOrderService {
  /**
   * 
   * <strong>Title : selectRepairOrderListByCondition<br></strong>
   * <strong>Description : </strong>根据查询条件获得维修列表<br> 
   * <strong>Create on : 2015年11月9日 下午4:26:03<br></strong>
   * <p>
   * @param condition
   * @return
   * List<RepairOrder>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<RepairOrder> selectRepairOrderListByCondition(RepairOrderCondition condition);

  /**
   * 
   * <strong>Title : selectRepariOrderCountByCondition<br></strong>
   * <strong>Description : </strong>根据查询条件获得维修总条数<br> 
   * <strong>Create on : 2015年11月9日 下午4:26:57<br></strong>
   * <p>
   * @param condition
   * @return
   * int
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  int selectRepariOrderCountByCondition(RepairOrderCondition condition);

  /**
   * 
   * <strong>Title : insertRepairOrder<br></strong>
   * <strong>Description : </strong>报修<br> 
   * <strong>Create on : 2015年11月9日 下午4:27:17<br></strong>
   * <p>
   * @param order
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  boolean insertRepairOrder(RepairOrder order);

  /**
   * 
   * <strong>Title : getRepairOrderState<br></strong>
   * <strong>Description : </strong>根据维修单编号获得当前处理状态<br> 
   * <strong>Create on : 2015年11月9日 下午4:27:34<br></strong>
   * <p>
   * @param orderCode
   * @param siteCode
   * @return
   * String
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  String getRepairOrderStatus(String orderCode, String siteCode);

  /**
   * 
   * <strong>Title : receiveRepairOrder<br></strong>
   * <strong>Description : </strong>接单<br> 
   * <strong>Create on : 2015年11月9日 下午4:28:03<br></strong>
   * <p>
   * @param businessKey
   * @param siteCode
   * @return
   * BatchJobReport
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  BatchJobReport doReceiveRepairOrder(String businessKey, String siteCode);

  /**
   * 
   * <strong>Title : receiveRepairOrder<br></strong>
   * <strong>Description : </strong>根据businessKey接单<br> 
   * <strong>Create on : 2015年11月9日 下午4:28:03<br></strong>
   * <p>
   * @param orderCode
   * @param siteCode
   * @return
   * BatchJobReport
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人  | 修改日期  | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void doReceiveRepairOrderByBusinessKey(String orderCode, String siteCode);

  /**
   * 
   * <strong>Title : saveRepairOrderPart<br></strong>
   * <strong>Description : </strong>插入设备维修单备件表<br> 
   * <strong>Create on : 2015年11月9日 下午4:28:35<br></strong>
   * <p>
   * boolean
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  boolean saveRepairOrderPart(List<RepairOrderPart> parts, String orderCode, String siteCode);

  /**
   * 
   * <strong>Title : saveRepairOrderCause<br></strong>
   * <strong>Description : </strong>保存设备维修单故障原因<br> 
   * <strong>Create on : 2015年11月9日 下午4:28:35<br></strong>
   * <p>
   * boolean
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人  | 修改日期  | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  boolean saveRepairOrderCause(List<RepairOrderCause> causes, String orderCode, String siteCode);

  /**
   * 
   * <strong>Title : insertRepairOrderPart<br></strong>
   * <strong>Description : </strong>设备报修录入<br> 
   * <strong>Create on : 2015年11月9日 下午4:28:35<br></strong>
   * <p>
   * @param order
   * @param causes
   * @param parts
   * BatchJobReport
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人  | 修改日期  | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  BatchJobReport doRecordRepairOrder(RepairOrder order, List<RepairOrderCause> causes, List<RepairOrderPart> parts);

  /**
   * 
   * <strong>Title : checkRepairOrder<br></strong>
   * <strong>Description : </strong>验收<br> 
   * <strong>Create on : 2015年11月9日 下午4:29:20<br></strong>
   * <p>
   * @param order
   * @return
   * BatchJobReport
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  BatchJobReport doCheckRepairOrder(RepairOrder order);

  /**
   * 
   * <strong>Title : getRepairOrder<br></strong>
   * <strong>Description : </strong>根据单号获取维修单实体<br> 
   * <strong>Create on : 2015年11月10日 上午9:50:50<br></strong>
   * <p>
   * @param orderCode
   * @param siteCode
   * @return
   * RepairOrder
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  RepairOrder getRepairOrder(String orderCode, String siteCode);

  /**
   * <strong>Title : deleteRepairOrders<br></strong>
   * <strong>Description : </strong>删除维修单<br> 
   * <strong>Create on : 2015年11月10日 下午4:19:14<br></strong>
   * <p>
   * @param string
   * @return
   * BatchJobReport
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  BatchJobReport deleteRepairOrders(String string, String siteCode);

  /**
   * <strong>Title : modifyRepairOrder<br></strong>
   * <strong>Description : </strong>修改报修单<br> 
   * <strong>Create on : 2015年11月10日 下午4:50:55<br></strong>
   * <p>
   * @param order
   * BatchJobReport
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  BatchJobReport modifyRepairOrder(RepairOrder order);

  /**
   * <strong>Title : getRepairOrderWithCausePart<br></strong>
   * <strong>Description : </strong>获得备件单和原因单<br> 
   * <strong>Create on : 2015年11月13日 上午9:37:32<br></strong>
   * <p>
   * @param id
   * @param siteCode
   * @return
   * RepairOrder
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<RepairOrder> getRepairOrderWithCausePart(String id, String siteCode);

  List<RepairOrderCause> getRepairOrderCause(String id, String siteCode);

  List<RepairOrderPart> getRepairOrderPart(String id, String siteCode);

  /**
   * <strong>Title : getOrderByBusinessKey<br></strong>
   * <strong>Description : </strong>根据bussinessKey获得实体<br> 
   * <strong>Create on : 2015年11月27日 下午4:13:47<br></strong>
   * <p>
   * @param bussinessKey
   * @param siteCode
   * @return
   * RepairOrder
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  RepairOrder getOrderByBusinessKey(String bussinessKey, String siteCode);

  //审核维修单complete事件
  void repairOrderAudit(DelegateTask task, String eventName);

  //维修录入complete事件
  void repairAudit(DelegateTask task, String eventName);

  //保修人验收complete事件
  void checkOrderAudit(DelegateTask task, String eventName);

  //重新报修complete事件
  void reportBackEndProcessor(DelegateTask task, String eventName);

}
